iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。

本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP26。


在處理 Order 資料建立的部分之後,就要開始處理 OrderDetail 的資料紀錄,當然就要調整 MockData、DataService 與 IDataService 的設計。

首先,在 IDataService 增加一個 AddOrderDetail 方法的宣告,並透過實作介面的處理幫 MockData 與 DataService 都實作好 AddOrderDtail 方法。

在 IDataService:

int AddOrderDetail(Models.OrderDetail orderDetail);

完成結果如下圖:
01

在 DataService:

public int AddOrderDetail(Models.OrderDetail orderDetail);
{
    throw new NotImplementedException();
}

完成結果如下圖:
02

在 MockData:

public int AddOrderDetail(Models.OrderDetail orderDetail);
{
    var order = new Models.Order() { Id = orders.Last().Id + 1 , OrderDate = DateTime.Now, PersonId = personId };
    orders.Add(order);
    return order.Id;
}

完成結果如下圖:
03

繼續要調整的是 AddOrderPage 與 AddOrderPageViewModel。

首先針對 AddOrderPageViewModel 增加三個 ObservableProperty 屬性,以便 AddOrderPage 可以直接繫結:

[ObservableProperty]
private decimal _salePrice;

[ObservableProperty]
private int _saleQuantity;

[ObservableProperty]
private string _saleNote;

完成結果如下圖:
04

繼續找到在 AddOrderPageViewModel 設計的 ProductId 屬性的 Set,加上設定 SalePrice、SaleQuantity、SaleNote 的初始值:

SalePrice = CurrentProduct.Price;
SaleQuantity = 1;
SaleNote = "無";

完成結果如下圖:
05

仍舊在 AddOrderPageViewModel 當中,並找到先前設計的 Done 方法,在轉跳前加入執行 AddOrderDetail 方法的程式:

App.DataService.AddOrderDetail(new OrderDetail
{
    OrderId = OrderId,
    ProductId = CurrentProduct.Id,
    Quantity = SaleQuantity,
    Price = SalePrice,
    Note = SaleNote,  
});

完成結果如下圖:
06

再來就找到 AddOrderPage 變更其中的 Entry 原本設定的 Text 內容為 Binding 的作法:

Text="{Binding SaleQuantity}"
Text="{Binding SalePrice}"
Text="{Binding SaleNote}"

完成結果如下圖:
07

在發動 "下訂單" 執行時的效果,點選 "完成" 加入訂單當中:
08-Android

然後再到 "訂單列表" 去確認訂單與明細:
09-Android


上一篇
EP25
下一篇
EP27
系列文
Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言